package com.sheng.leetcode.year2022.month04.day07;

import org.junit.Test;

/**
 * @author liusheng
 * @date 2022/04/07
 *
 * 796. 旋转字符串
 *
 * 给定两个字符串, s 和 goal。如果在若干次旋转操作之后，
 * s 能变成goal ，那么返回true 。
 * s 的旋转操作 就是将s最左边的字符移动到最右边。 
 * 例如, 若 s = 'abcde'，在旋转一次之后结果就是'bcdea' 。
 *
 * 示例 1:
 *
 * 输入: s = "abcde", goal = "cdeab"
 * 输出: true
 * 示例 2:
 *
 * 输入: s = "abcde", goal = "abced"
 * 输出: false
 *  
 *
 * 提示:
 *
 * 1 <= s.length, goal.length <= 100
 * s 和 goal 由小写英文字母组成
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/rotate-string
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class LeetCode0796 {

    @Test
    public void test01(){
        //String s = "abcde", goal = "cdeab";
        String s = "abcde", goal = "abced";
        System.out.println(new Solution().rotateString(s, goal));
    }
}
class Solution {
    public boolean rotateString(String s, String goal) {
        boolean flag = false;
        if (s.length() != goal.length()) {
            return flag;
        }
        for (int i = 0; i < s.length() - 1; i++) {
            s = rotate(s);
            if (s.equals(goal)) {
                flag = true;
                break;
            }
        }
        return flag;
    }

    public String rotate(String s) {
        return s.substring(1).concat(s.substring(0, 1));
    }
}
